package com.example.school.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

@TableName("student")//对应数据库的表名,一致时可省略
@Data
@Accessors(chain = true)
public class Student implements Serializable {

    @TableId(type = IdType.AUTO)//告诉mybatisplus id由数据库提供,不由mybatisplus生成
    private Integer id;

    @NotBlank(message = "姓名不能为空")
    private String name;

    @NotBlank(message = "性别不能为空")
    private String sex;

    @NotBlank(message = "班级不能为空")
    /*
     *当实体类的命名是驼峰命名时,mybatisplus在生成sql语句时字段名会自动变为带下划线的,通过加@TableField注解就不自动
     *转换了,而是以value之后的列名为主
     */
    @TableField(value = "className")
    private String className;

    //该注解由SpringMVC提供的,用于将前端请求的参数按指定的格式转换成Date类型对象
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    //该注解是有Jackson提供的,用于将当前对象转换成json字符串时,该日期属性按照指定的格式来转换
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @NotNull(message = "生日不能为空")
    private Date birthday;

    @NotBlank(message = "身份证号码不能为空")
    @TableField(value = "idCarNo")
    private String idCarNo;

}
